import java.util.Random;

/*
对象，一个实实在在的实物

树
    ==属性==
    键     值         键-值，对
    属性名  属性值
    树龄，  2
    高度，  3
    品种，  李子树
    ==方法===
    抽象的动作
    呼吸（）；

猫
    ==属性==
    年龄：
    品种
    ==方法==
    住老鼠()
    run();
    say();


类
    ==class==
    类是对象的图纸，可以创造对象

 */
//定义类，
// 创造了一种数据类型
// 引用类型2，1系统自带的（Scanner.Random,Arrays）
//          2,用户自定义的类
class Cat{
    String name="小橘猫";
    int age;//0
    String sex;//null
    //定义方法
    public static void f1(){
        System.out.println("i am f1");
    }
    //尽量别带static
    //不带static的方法，无法通过类名访问
    //通过new出来的实例名访问
    public void say(){
        System.out.println("喵");
    }
}

public class J02object {
    public static void main(String[] args) {
        Random r = new Random();
        Cat abc = new Cat();
        System.out.println("abc = " + abc);//

        Cat cat = new Cat();
        System.out.println("cat = " + cat);
        //访问属性 点语法
        cat.name = "加菲猫";
        System.out.println("cat.name = " + cat.name);
        //没报错，对象的属性中，变量有初始值，参考数组
        System.out.println("cat.age = " + cat.age);
        System.out.println("cat.sex = " + cat.sex);
        System.out.println("==调用方法==");
//        cat.f1();
        //不推荐这么写
//        cat.f1();
//        Cat.f1();//推荐
//        Cat.say();//没有staic，不可以这么访问
        cat.say();//应该这样
    }
}
